using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.Serialization;

namespace Magnet.Framework.Syndication.Interfaces
{
    /// <summary>
    /// 
    /// </summary>
    [ISerializable]
    [XmlElement("item")]
    public interface IRSSItem
    {
        /// <summary>
        /// Gets or sets the title.
        /// </summary>
        /// <value>The title.</value>
        [XmlElement("title")]
        string Title { get;set; }

        /// <summary>
        /// Gets the link.
        /// </summary>
        /// <value>The link.</value>
        [XmlElement("link")]
        Uri Link { get; }

        /// <summary>
        /// Gets or sets the description.
        /// </summary>
        /// <value>The description.</value>
        [XmlElement("description")]
        string Description { get;set; }

        /// <summary>
        /// Gets or sets the author.
        /// </summary>
        /// <value>The author.</value>
        [XmlElement("author")]
        string Author { get;set; }

        /// <summary>
        /// Gets or sets the categories.
        /// </summary>
        /// <value>The categories.</value>
        [XmlElement("category")]
        List<string> Categories { get;set; }

        /// <summary>
        /// Gets or sets the comments link.
        /// </summary>
        /// <value>The comments link.</value>
        [XmlElement("comments")]
        Uri CommentsLink { get;set; }

        /// <summary>
        /// Gets or sets the enclosure.
        /// </summary>
        /// <value>The enclosure.</value>
        [XmlElement("enclosure")]
        IRSSEnclosure Enclosure { get;set; }

        /// <summary>
        /// Gets or sets the GUID.
        /// </summary>
        /// <value>The GUID.</value>
        [XmlElement("guid")]
        string Guid { get;set; }

        /// <summary>
        /// Gets or sets the published date.
        /// </summary>
        /// <value>The published date.</value>
        [XmlElement("pubDate")]
        DateTime PublishedDate { get;set; }

        /// <summary>
        /// Gets or sets the source.
        /// </summary>
        /// <value>The source.</value>
        [XmlElement("source")]
        string Source { get;set; }
    }
}
